#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>

/*
	控制台执行命令
	往b.txt文件写入管道中的数据（来源于a.txt）
	./writer b.txt
 */

#define FIFO_FILE  "/home/linux/CProject/IO/day6_bingfa/pipe_test/myfifo"

int main(int args, const char * argv[]){

	//以只写方式打开控制台指定的文件  b,txt
	int consoleFd = open(argv[1], O_WRONLY | O_CREAT, 0666);

	int ret;
	char buff[32] = {0};
	//文件描述符
	int fd;
	//创建一个myfifo的管道文件
	ret = mkfifo(FIFO_FILE, 0666);
	if(ret < 0){
		perror("mkfifo");
	}

	//以读的方式打开myfifo文件
	fd = open(FIFO_FILE, O_RDONLY);
	if(fd < 0){
		perror("open");
		return -1;
	}
	printf("after open\n");

	//读出myfifo文件中的内容 写入到控制台中的文件
	while(1){
		int ret = read(fd, buff, 1);
		if(ret == 0){
			break;
		}
		printf("%s\n", buff);
		write(consoleFd, buff, strlen(buff));
	}

	//关闭文件描述符
	close(fd);
	close(consoleFd);
	return 0;
}
